当前位置:  开发笔记 > 编程语言 > 正文

|之间的区别 和|| ,或者&和&&

如何解决《|之间的区别和||,或者&和&&》经验,为你挑选了1个好方法。

这些是在Dev-cpp C++ 5.4.2上编写的两个简单的C++示例:

float a, b, c;

if (a | b  & a | c)
   printf("x = %.2f\tF = %.0f\n", x, F);
else
   printf("x = %.2f\tF = %.2f\n", x, F);

而这段代码:

float a, b, c;

if (a || b  && a || c)
   printf("x = %.2f\tF = %.0f\n", x, F);
else
   printf("x = %.2f\tF = %.2f\n", x, F);

有谁能告诉我之间的差异||> |&> &&.第二个代码有效,但首先没有.编译器给出了一条错误消息:

[错误]类型'float'和'float'到二进制'运算符&'的操作数无效.

JSF.. 11

运营商|,&~作用于平行的各个位.它们只能用于整数类型. a | b每个位的独立OR运算a与相应的位进行,b以产生该位的结果.

运算符||,&&!作为单个true/ false值作用于每个操作数.可以使用隐式转换为的任何数据类型bool.许多数据类型,包括float使用隐含!=0操作隐式转换为bool .

||并且&&还"短路".这意味着只要第一个操作数可以确定结果的值,就不会计算第二个操作数.例:

ptr && (*ptr==7) 如果ptr为零,则结果为false,而没有任何因解除引用零而导致段错误的风险.

你可以与之形成对比(int)ptr & (*ptr).忽略这个甚至是想要的奇怪操作的事实,如果(int)ptr为零,则整个结果将为零,因此人们可能认为在这种情况下你不需要第二个操作数.但无论如何,该计划可能会计算两者.



1> JSF..:

运营商|,&~作用于平行的各个位.它们只能用于整数类型. a | b每个位的独立OR运算a与相应的位进行,b以产生该位的结果.

运算符||,&&!作为单个true/ false值作用于每个操作数.可以使用隐式转换为的任何数据类型bool.许多数据类型,包括float使用隐含!=0操作隐式转换为bool .

||并且&&还"短路".这意味着只要第一个操作数可以确定结果的值,就不会计算第二个操作数.例:

ptr && (*ptr==7) 如果ptr为零,则结果为false,而没有任何因解除引用零而导致段错误的风险.

你可以与之形成对比(int)ptr & (*ptr).忽略这个甚至是想要的奇怪操作的事实,如果(int)ptr为零,则整个结果将为零,因此人们可能认为在这种情况下你不需要第二个操作数.但无论如何,该计划可能会计算两者.

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有